クジラの練習帳006
練習帳006(条件式の種類)
今回は問題ではなく、疑問に思ったことを調べていきたいと思います。
条件分岐
条件分岐を書く場合は、if文やcase文、unless文などがありました。それぞれの強みを調べていきたいと思います。
if文の特徴
if文は一番シンプルな条件式です。
if <条件式1>
条件式1がtrueだった時の処理
elsif <条件式2>
条件式2がtrueだった時の処理
else
条件式2がfalseだった時の処理
end
条件式の真偽によって行う処理を変更していきます。
if ~がtrueなら処理を行い、falseで条件式を続ける場合はelsif ~に降ります。
条件式を抜け、falseでの処理を行う場合はelseで書きます。条件分岐の終わりにendを置きます。
unless文の特徴
unlessはifの反対で、条件式がfalseの時に処理を行います。
unless <条件式1>
条件式1がfalseだった時の処理
else
条件式1がtrueだった時の処理
end
また、elsifは使えません。
case文の特徴
case文は条件をさらに詳しく、また多くしたい時に使います。
case 対象オブジェクト
when 値1
値1と一致する場合に行う処理
when 値2
値2と一致する場合に行う処理
when 値3
値3と一致する場合に行う場合
else
どの値にも一致しない場合
end
同じ内容をif文で書くとこんな感じ
対象オブジェクト
if 対象オブジェクト == 1
値1と一致する場合に行う処理
elsif 対象オブジェクト == 2
値2と一致する場合に行う処理
elsif 対象オブジェクト == 3
値3と一致する場合に行う処理
else
どの値にも一致しない場合
end
どちらが読みやすいでしょうか?
case文はif文で代用ができると思いますが、条件が増えても可読性が保てる利点があります。
case文の例文
puts "誕生月を入力してください。"
month = gets.to_i
case month
when 1
puts "睦月"
when 2
puts "如月"
when 3
puts "弥生"
when 4
puts "卯月"
when 5
puts "皐月"
when 6
puts "水無月"
when 7
puts "文月"
when 8
puts "葉月"
when 9
puts "長月"
when 10
puts "神無月"
when 11
puts "霜月"
when 12
puts "師走"
else
puts "範囲外の値です"
end